package com.neuedu.corejava.ch5;

import org.omg.CORBA.PUBLIC_MEMBER;

public class MethodsClass {

	public static void main(String[] args) {
		// 单行注释
		
		/*
		  多行注释
		 */
		
		/**
		 * <per>
		 * 
		 * 文档注释：用于生成api文档或在编码是可以进行使用提示
		 *        文档注释支持使用部分html网页标签和css样式
		 *        
		 *  1.java类中方法的定义
		 *  2.有参方法和无参方法
		 *  3.有返回值方法和无返回值方法
		 *  4.方法的定义和方法的调用/使用
		 *  5.基本数据类型与引用数据类型
		 *  
		 *        
		 *    <per>     
		 *   @author netboy  
		 */	   
	}
	
	//方法的重载与访问修饰符无关，static修饰符也无关
	//使用static修饰的方法叫做类方法；类方法可以通过类名进行调用（不需要实力化对象）
	public static void printColor(char color) {//在定义方法时，参数列表上的参数称为形式参数，形参
		System.out.println(color);
	}
	

	//设计一个方法，接收两个整数进行加法计算，并返回
	//注意：在方法定义时，如果声明了返回值类型，则必须在方法中使用return语句返回一个类型匹配的值
	public int add(int a,int b){
		//如果方法存在多个分支，则每个分支都需要使用return语句返回一个值
//		if (a==0 && b==0) {
//			return 0;
//		}else{
//			int c= a+b;
//			return c;
//		}
		
		//当方法内部需要返回不同值时，可以使用多个return在不同情况下返回不同得值
		//也可以根据不同的情况，修改同统一的返回变量的值；再在方法的后面使用同一个return语句返回变量值
		int ret = 0;
		if(a==0 && b==0){
			ret = -1;
		}else {
			ret = a+b;
		}
		return ret;
	}
	
	//方法可以没有参数，和没有返回值:当方法没有返回值时，需要使用void进行说明
	//void关键词表示void 类型，表示没有数据类型
	//private是访问修饰符号，表示私有的意思：使用private修饰的实例或方法只能在该类内部使用
	//Java的访问修饰符号共有4类：public共有的，protected受保护的，默认（不写）；private
	private void printColor(){
		System.out.println("红色");
	}
	
	//访问修饰符是protected表示受保护的
	protected int printColor(String color){
		System.out.println("color");
		return 1;
	}
	
	public void printColor(int count){
		for (int i = 0; i < count; i++) {
			System.out.println("红色");
		}		
	}
		
	//访问修饰符是(defualt)默认的，
	//方法的重载：在同一个类中，方法名相同，参数列表不同（参数的个数不同，参数的类型不同，类型的顺序不同；与访问修饰符无关;与返回值类型无关
	void printColor(String color,int count){
		for (int i = 0; i < count; i++) {
			System.out.println("color");
		}		
	}
	
	void printColor(int count,String color){
		for (int i = 0; i < count; i++) {
			System.out.println("color");
		}		
	}
	
	
	public static void main1(String[] args) {
		//没有使用static修饰的方法称为实例方法；
		//使用static修饰的方法称为类方法或静态方法
		//实例方法必须通过实例化对象进行调用
		//类与对象的关系，类实例化
		//mClass是一个实例变量的引用，经常把它称为类实例对象
		MethodsClass mClass = new MethodsClass();
		//对象引用/调用方法或属性/实例变量的操作符号是点号（.）
		//方法重载后在调用方法时，jvm能够根据参数类型列表自动识别并调用不同的方法
		//为什么要重载？方便进行维护和扩展，提供程序的可维护性和可扩展性
		mClass.printColor();
		mClass.printColor("紫色");
		mClass.printColor("蓝色",3);
		mClass.printColor(4,"棕色");
		
		mClass.printColor(5);//5是实参，在方法调用时，实际传递的参数叫实参
		int a = 3;
		mClass.printColor(a);//a是实参，实参是保存有实际数据值的变量 或 数据值
		
		
		//静态方法可以使用类名.方法名进行调用
		MethodsClass.printColor('白');//public
		//如果在同一个类中可以省略类名
		printColor('白');
	}
	
}









